const path = require('path')
const { CleanWebpackPlugin } = require('clean-webpack-plugin')
const htmlWebpackPlugin = require('html-webpack-plugin');

/*
* 需要转换的js文件。key 打包之后的路径及名称 value 源文件路径
* */
let entry = {
  'js/main': './src/js/main.js',
  'js/utils': './src/js/utils.js',
}


module.exports = {
  entry: {
    ...entry,
  },
  output: {
    filename: '[name].[hash:8].js',
    path: path.join(__dirname, '/dist')
  },
  optimization: {
    //分割代码块
    splitChunks: {
      //缓存组 缓存公共代码
      cacheGroups: {
        //公共模块
        commons: {
          name: 'commons',
          chunks: 'initial', //入口处开始提取代码
          minSize: 0, //代码最小多大，进行抽离
          minChunks: 2, //代码复 2 次以上的抽离
        }
      }
    }
  },
  module: {
    rules: [
      {
        test: /\.js$/,
        // include: /src/,          // 只转化src目录下的js
        exclude: /node_modules/,  // 排除掉node_modules，优化打包速度
        use: {
          loader: 'babel-loader',
          options: {
            presets: ['env']
          }
        }
      }
    ]
  },
  // 对应的插件
  plugins: [
    // 清除输出目录中的文件
    new CleanWebpackPlugin(),

    // 生成html文件，用于测试js是否转换成功
    new htmlWebpackPlugin({
      template: path.join(__dirname, 'public/index.html'),
    })
  ],

  // 开启调试
  devtool: 'source-map'
}
